# _*_ coding: UTF-8 _*_
# @Time     : 2021/10/26 15:07
# @Author   : 郑鲁明
# @Site     : http://www.hzdledu.cn/
# @File     : prc.py
# @Software : PyCharm

# 1.# 求 1-100以内所有含6的数
list2 = []


def num6(a):
    if a == 1:
        return list2
    else:
        a = str(a)
        if '6' in a:
            list2.append(int(a))
        return num6(int(a) - 1)


# 2、Chuckie Lucky赢了100W美元，
# 他把它存入一个每年盈利8%的账户。
# 在每年的最后一天，Chuckie取出10W美元。
# 编写一个程序，计算需要多少年Chuckie就会清空他的账户。

a = 100
year = 0
while a > 0:
    a = a + a * 0.08
    year += 1
    a = a - 10


def lucky(a, year=0):
    if a < 10:
        year += 1
        return year
    else:
        a = a + a * 0.08
        year += 1
        a = a - 10
        return lucky(a, year)


# 3、题目：猴子吃桃问题：猴子第一天摘下若干个桃子，当即吃了一半，还不瘾，又多吃了一个 第二天早上又将剩下的桃子吃掉一半，又多吃了一个。
# 以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时，见只剩下一个桃子了。求第一天共摘了多少。
# 程序分析：采取逆向思维的方法，从后往前推断。

def peach(day, num=1):
    if day == 1:
        return num
    else:
        return peach(day - 1, (num + 1) * 2)


# 4、不使用自带函数，写一个函数，用于返回一个数的绝对值

def absnum(num):
    if num < 0:
        return -num
    else:
        return num


# 5、写一个函数，用来求三个数的最大值

def maxnum(a, b, c):
    if a > b:
        if a > c:
            return a
        else:
            return c
    else:
        if b > c:
            return b
        else:
            return c

#         return max(a,b,c)


# 提升：
# 6、写一个函数，返回输入整数（大于999小于10000）的每位数的数字之和。

def sumnum(num):
    num = str(num)
    sum1 = 0
    for i in num:
        sum1 += int(i)
    return sum1


# 7.递归实现阶乘：
# n！=nxn-1xn-2x....1
# 5!=5x4！

def foo1(num):
    if num == 1:
        return 1
    else:
        return num * foo1(num-1)



# 8.实现1！+2！+3！+。。。+n！

def foo2(n):
    if n == 1:
        return 1
    else:
        sum1 = 1
        for i in range(1,n+1):
            sum1 *= i
        return sum1+foo2(n-1)




if __name__ == '__main__':
    print(num6(100))
    print(lucky(100))
    print(peach(10))
    print(absnum(-345100))
    print(maxnum(3, 2, 9))
    print(sumnum(5142))
    print(foo1(3))
    print(foo2(4))